課程名稱 |
編譯程式設計 COMPILER DESIGN |
開課學期 |
98-2 |
授課對象 |
資訊工程學系 |
授課教師 |
陳俊良 |
課號 |
CSIE3230 |
課程識別碼 |
902 39200 |
班次 |
01 |
學分 |
3 |
全/半年 |
半年 |
必/選修 |
必帶 |
上課時間 |
星期四2,3,4(9:10~12:10) |
上課地點 |
資104 |
備註 |
限本系所學生(含輔系、雙修生) 且 限學士班三年級以上 且 限學號單號 總人數上限:106人 |
Ceiba 課程網頁 |
http://ceiba.ntu.edu.tw/982compiler |
課程簡介影片 |
|
核心能力關聯 |
核心能力與課程規劃關聯圖 |
課程大綱
|
為確保您我的權利,請尊重智慧財產權及不得非法影印
|
課程概述 |
編譯器是歷史最悠久的計算機程式之一,負責把利用高階語言撰寫的程式轉成低階語言的格式,以利底層平台(虛擬機器、作業系統、硬體等)的執行。編譯器是支程式,但不是會寫程式的人就會寫編譯器。理由之一,編譯器很大,要撰寫維護如此規模的程式必須擁有更精進的程式技巧與經驗。理由之二,編譯器開發至今已有很完備的理論基礎,脫離了這些理論要寫出有用的編譯器,縱使不是緣木求魚也一定事倍功半。
本課程將談論編譯器的理論與實作。至於編譯器課程的重要性,底下文字摘錄自 ACM 以及 IEEE Computer Society 主導之 2008 年版計算機科學課程規劃書: Several industrialists passed very positive comment about compiler courses. Although many companies do not engage in anything related to compilers, compiler writing tended to be seen as a microcosm for realistic software development. So good compiler writers are often seen as desirable; they tend to be good software engineers.
課程大綱:
* compiler structure
* regular expression & context-free grammar
* lexical analysis
* syntactic analysis
* compiler construction tools
* symbol table management
* semantic analysis
* intermediate code synthesis
* runtime memory management
* basic optimization
* target code generation |
課程目標 |
本課程的目標在於讓修課同學:
* 了解編譯過程的各階段 (phases)
* 了解編譯器理論及其相關數學
* 有能力製作一個小型編譯器
* 有機會觀摩真實的編譯器程式碼
* 藉助實作編譯器的過程,累積軟體開發的經驗
* 奠定進一步從事編譯器相關研究之基礎 |
課程要求 |
|
預期每週課後學習時數 |
|
Office Hours |
另約時間 |
指定閱讀 |
二擇一(請見公佈欄)
A. Aho, M. Lam, R. Sethi and J. Ullman, "Compilers: Principles, Techniques, & Tools," 2nd Ed., Addison-Wesley, 2007. (ISBN 0321547985)
C. Fischer, R. Cytron and R. LeBlanc, Jr., "Crafting A Compiler," 2nd Ed., Addison-Wesley, 2010. (ISBN 0136067050) |
參考書目 |
|
評量方式 (僅供參考) |
No. |
項目 |
百分比 |
說明 |
1. |
實驗一 small scanner |
10% |
授課教師保留更動之權力 |
2. |
實驗二 first()/follow() |
10% |
授課教師保留更動之權力 |
3. |
實驗三 small parser |
10% |
授課教師保留更動之權力 |
4. |
實驗四 small compiler |
10% |
授課教師保留更動之權力 |
5. |
期中考 |
30% |
授課教師保留更動之權力 |
6. |
期末考或期末報告 (學生自選) |
30% |
授課教師保留更動之權力 |
|
|